using System;
using System.Collections.Generic;


namespace Studio.Game.GameBox
{
    /// <summary>
    /// Interface between AgentScript & GameAgent
    /// </summary>
    public interface IGameAgent
    {
        /// <summary>
        /// GameSpeed Property.
        /// </summary>
        int GameSpeed { get; set; }

        /// <summary>
        /// Run a script, call completed callback when finished.
        /// </summary>
        void Run(AgentScript Script);

        /// <summary>
        /// Run the specified Sentence only without callback. return a string result
        /// </summary>
        string Run(AgentScriptSentence Sentence);

        /// <summary>
        /// Start to play the Game
        /// </summary>
        void Start();

        /// <summary>
        /// Pause the current script
        /// </summary>
        void Pause();

        /// <summary>
        /// Stop current script
        /// </summary>
        void Stop();

        /// <summary>
        /// Restart the current script
        /// </summary>
        void Restart();

        /// <summary>
        /// Run the next step
        /// </summary>
        void Step();

        /// <summary>
        /// Callback function. it will be called by script directly.
        /// </summary>
        /// <param name="Params">Extracted from script</param>
        /// <returns>Current GameStatus</returns>
        
        //        Comment it. no use now with AgentScript_V1
        //        int CallBack(string [] Params);

    }
}
